述詞 ( Predicate ) 的回傳值皆為 True / False,因此在撰寫 SQL 的篩選條件時,是不可或缺的角色。
以下列舉出一些在設定條件時,十分常用的:
運用 LIKE 可以讓資料庫進行「部分一致」的搜尋,細分為以下三類:
關鍵符號子是 "%":代表所有字串(含空白)的意思
/* 1. 以 ddd 開頭的所有字串 */
LIKE 'ddd%'
/* 2. 字串間有 ddd */
LIKE '%ddd%'
/* 3. 以 ddd 結尾的字串 */
LIKE '%ddd'
例如要搜尋 Product 中,sell_price 為 50 到 2000 。
SELECT * FROM Product WHERE sell_price BETWEEN 50 AND 2000;
假設要搜尋 Product 中,sell_price 為 30, 40, 80, 18000。你可以寫成以下形式,但會很難維護:
SELECT * FROM Product
WHERE sell_price = 30
OR sell_price = 40
OR sell_price = 80
OR sell_price = 18000;
用 IN 的話,可以簡潔的表達:
SELECT * FROM Product
WHERE sell_price IN (30,40,80,18000);
因為 NULL 在 SQL 中是個特別的存在,無法使用 "=" 來判別是否為 NULL,要改用 IS NULL。
例如要找出 INFO 為 NULL 的:
SELECT * FROM Product WHERE info IS NULL;
/*反之則改成 IS NOT NULL*/
SELECT * FROM Product WHERE info IS NOT NULL;
「每天一篇技術文章,並持續 30 天」看似簡單,卻是個心智、體力的長期競賽。撰寫完這 30 天的 SQL 相關文章,除幫自己統整一下過往所學以及不足之外,也訓練自己輸出點東西給大家。這些整理後的文字記錄,若能幫助他人在學習程式的路上節省心力,就很值得了。